from django.shortcuts import render

# Create your views here.
# from fdfs_client.client import Fdfs_client
# client = Fdfs_client('utils/fdfs/client.conf')
# client.upload_by_filename('/home/python/Desktop/1.jpg')
from rest_framework.generics import ListAPIView

from goods.models import SKU
from goods.serializers import SKUSerializer

"""
{'Storage IP': '192.168.189.66', 'Remote file_id': 'group1/M00/00/00/wKi9QlylvZCAeA4qAABILAaZS3A012.jpg', 'Local file name': '/home/python/Desktop/1.jpg', 'Group name': 'group1', 'Uploaded size': '18.00KB', 'Status': 'Upload successed.'}

"""

"""
1.首页需要进行功能的拆分 来获取数据

静态化页面:我们让用户去访问我们提前准备好的html页面,这个html页面
        应该是从数据库中查询出来的最新的数据
        1.先查询数据
        2.将查询的数据 填充到html中
        3.我们把最新的html文件 放到指定的目录中
        
"""

"""
列表页面的需求分析:
    1.需要让前端传递一个分类id
    2.热销数据和列表数据的展示,我们分为2个接口
    
热销数据的分析:
    一,把大体的步骤写下来
        让前端传递一个分类id
        后端接受分类id
        根据分类id进行数据查询,并且进行排序操作[SKU,SKU,SKU]
        将对象列表转换为字典列表
        返回响应
    二,确定请求方式和路由
        GET  /goods/categories/(?P<category_id>\d+)/hotskus/
    三,选择视图
        
"""


class HotSKUListView(ListAPIView):
    serializer_class = SKUSerializer
    pagination_class = None
    # queryset = SKU.objects.filter(category_id = category_id).order_by('-sales')[:2]

    def get_queryset(self):
        category_id = self.kwargs['category_id']
        return SKU.objects.filter(category_id=category_id, is_launched=True).order_by('-sales')[:5]

"""
列表数据的获取,我们发现有很多功能,有排序,有分页
这个时候,我们一个一个去实现
"""
from rest_framework.filters import OrderingFilter

# from rest_framework.pagination import PageNumberPagination


# class StandardResultsSetPagination(PageNumberPagination):
#     page_size = 5
#     # page_size_query_param = 'page_size'
#     max_page_size = 20


class SKUListView(ListAPIView):
    """
    商品列表数据
    GET /goods/categories/(?P<category_id>\d+)/skus/?page=xxx&page_size=xxx&ordering=xxx
    """

    serializer_class = SKUSerializer
    # 通过定义过滤后端 ，来实行排序行为
    filter_backends = [OrderingFilter]
    ordering_fields = ('create_time', 'price', 'sales')

    def get_queryset(self):
        categroy_id = self.kwargs.get("category_id")
        return SKU.objects.filter(category_id=categroy_id, is_launched=True)

"""
列表数据 我们需要静态化,因为分类数据基本很少发生变化,当数据发生变化的时候,
    我们可以重新生成静态化页面
2.列表页面要做静态化,只是对分类做静态化,那列表数据/热销数据该如何获取呢?
    通过ajax 实现局部刷新
"""
from .serializers import SKUIndexSerializer
from drf_haystack.viewsets import HaystackViewSet


class SKUSearchViewSet(HaystackViewSet):
    """
    SKU搜索
    """
    index_models = [SKU]

    serializer_class = SKUIndexSerializer

